package com.shiroha.user.service;

import com.mybatisflex.core.service.IService;
import com.shiroha.user.pojo.Follow;
import com.shiroha.user.pojo.vo.FollowResponse;

import java.util.UUID;

/**
 * 关注服务
 */
public interface IFollowService extends IService<Follow> {

    /**
     * 新增关注
     * @param followerId 关注者ID
     * @param followeeId 粉丝ID
     */
    void saveFollow(UUID followerId, UUID followeeId);

    /**
     * 查找用户的关注列表
     *
     * @param userId 当前用户的ID
     * @return FollowResponse 封装对象
     */
    FollowResponse findFolloweesByUserId(UUID userId);

    /**
     * 查找用户的粉丝列表
     *
     * @param userId 被关注的用户的ID
     * @return FollowResponse 封装对象
     */
    FollowResponse findFollowersByUserId(UUID userId);

    /**
     * 查找用户的互关（即朋友关系）列表
     *
     * @param userId 目标用户的ID
     * @return FollowResponse 封装对象
     */
    FollowResponse findFriendsByUserId(UUID userId);

    /**
     * 取消关注
     *
     * @param followerId 关注者ID
     * @param followeeId 被关注者ID
     * @return 取关成功返回 True
     */
    Boolean removeFollow(UUID followerId, UUID followeeId);

    /**
     * 检查两个用户是否是双向关注关系
     * @param userId1 用户一ID
     * @param userId2 用户二ID
     * @return 是朋友则返回 True
     */
    Boolean isFriend(UUID userId1, UUID userId2);
}
